/**
 * 哈夫曼树（最优二叉树）
 * 编码有个规则：  每个代码都不能是其它代码的前缀
 * 因为：如E用01来表示，X用01011000表示，那么解码时就弄不清楚01是表示E还是表示X的起始部分
 * 
 * 
 * 哈夫曼编码是一个通过哈夫曼树进行的一种编码，
 *      在这个二叉树中，只有叶子节点才是有效的数据节点（很重要），
 *                     其他的非叶子节点是为了构造出哈夫曼而引入的
 * 
 * 
 * 哈夫曼编码：字符/编码
 *      A   010
 *      E   1111
 *      I   110
 *      S   10 
 * 消息：SUSIE SAYS IT IS EASY
 * 哈夫曼编码：100111110110111100100101110100011001100011010001111010101110
 * 
 * 哈夫曼树：将ANCD等字符放在树上的一个固定结构。
 * 我们遍历哈夫曼树可得到某字符/字符串对应哈夫曼编码：
 *      遍历规则为：从根节点往下向左子树遍历一个节点编码为“0”，向右遍历一个节点编码为“1”
 * 
 * 而解码：
 *      每个字符都从根开始，如果遇到0，就向左走到下一个节点，如果遇到1，就向右
 *      如A就是    左->右->左 
 */